提示
阅读本文章,您需要:
了解scrapy,知道scrapy-redis可以用来干嘛,最好已经有了可以单机运行的scrapy爬虫。
已经尝试了一些反反爬措施后仍然觉得爬取效率太低。
已经看了无数scrapy-redis文章,却和我一样不得要领。(自己太笨)
已经看了无数scrapy-redis文章,被辣鸡文章坑的生活不能自理,到现在还没配置好。(可能还是自己太笨)
提示:本文为快速上手文章,有些操作的具体步骤不详细讲,自行百度通用解法,省略的部分我认为你可以自行解决,如果遇到问题,请留言提问
使用scrapy-redis将scrapy改造为分布式
安装需要的python库和数据库
安装scrapy-redis:pip install scrapy-redis
安装redis:可以仅在master(主)端安装
安装其他数据库(可选):mysql,mangoDB,用来保存大量数据,当然也可以选择不安装。用其他方法处理数据。
提示:请注意版本问题,不要过低。
配置redis
- master(主)上的redis安装后,需要做以下几件事:
配置redis.conf设置从外网访问:#bind 127.0.0.1
最好设置个密码
取消保护模式 protected-mode no
master启动redis,使用./redis-server redis.conf(改为你的设置文件所在位置)
尝试从slave(从)连接master的redis,连接成功(盗的图):
修改scrapy:setting.py
添加如下代码:
1 | # scrapy-redis |
对于itempipeline:你以前怎么存的数据还是怎么存,当然你也可以用redis先存,之后再一起转移出来。像我就直接存到mysql了
1 | ITEM_PIPELINES = { |
修改scrapy:spiders/xxxxx.py(自己命名的爬虫文件)
将继承改为继承Redisspider
1 | #!/usr/bin/env python |
修改slave的存储数据库设置(可选)
如果你想要让slave抓取到的数据直接存入master的数据库,您别忘了修改slave的数据库连接设置
1 | # for master |
启动分布式爬虫
启动master:scrapy crawl xxxxx
启动slave: crawl xxxxx
上传了个demo源码,供大家修改使用:
https://github.com/qqxx6661/scrapy_redis_demo
有问题请留言或邮件qqxx6661@gmail.com